const leftToRight = {
  "(": ")",
  "[": "]",
  "{": "}"
}

const isValid = function(s) { // '({[[ ]})'
  const stack = []
  const len = s.length
  for (let i = 0; i < len; i++) {
    const ch = s[i]
    // 当遍历到左括号时，我们往栈当中存进去一个该左括号应该对应的右括号
    if (ch === '(' || ch === '[' || ch === '{') {
      stack.push(leftToRight[ch])
    } else { // 如果遍历到的不是左括号，那我们就看当前这个右括号和栈顶的右括号是否一致
      if (stack.pop() !== ch) { // ) )
        return false
      }
    }
  }
  return !stack.length
}